﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:compo="clr-namespace:ReflectionStudio.Controls.Diagram.Components"
                    >

    <!--<ContextMenu x:Key="DesignerItemContextMenu">
        <MenuItem Header="Cut" Command="{x:Static ApplicationCommands.Cut}">
            <MenuItem.Icon>
                <Image Source="Images/16x16/cut.png" Width="16"/>
            </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header="Copy" Command="{x:Static ApplicationCommands.Copy}">
            <MenuItem.Icon>
                <Image Source="Images/16x16/copy.png" Width="16"/>
            </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header="Paste" Command="{x:Static ApplicationCommands.Paste}">
            <MenuItem.Icon>
                <Image Source="Images/16x16/paste.png" Width="16"/>
            </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header="Delete" Command="{x:Static ApplicationCommands.Delete}">
            <MenuItem.Icon>
                <Image Source="Images/16x16/delete.png" Width="16"/>
            </MenuItem.Icon>
        </MenuItem>
        <Separator/>
        <MenuItem Header="Grouping">
            <MenuItem Header="Group" Command="{x:Static s:DesignerCanvas.Group}">
                <MenuItem.Icon>
                    <Image Source="Images/16x16/group.png" Width="16"/>
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="Ungroup" Command="{x:Static s:DesignerCanvas.Ungroup}">
                <MenuItem.Icon>
                    <Image Source="Images/16x16/ungroup.png" Width="16"/>
                </MenuItem.Icon>
            </MenuItem>
        </MenuItem>
        <MenuItem Header="Order">
            <MenuItem Header="Bring Forward" Command="{x:Static s:DesignerCanvas.BringForward}">
                <MenuItem.Icon>
                    <Image Source="Images/16x16/bring_forward.png" Width="16"/>
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="Bring To Front" Command="{x:Static s:DesignerCanvas.BringToFront}">
                <MenuItem.Icon>
                    <Image Source="Images/16x16/bring_front.png" Width="16"/>
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="Send Backward" Command="{x:Static s:DesignerCanvas.SendBackward}">
                <MenuItem.Icon>
                    <Image Source="Images/16x16/send_backward.png" Width="16"/>
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="Send To Back" Command="{x:Static s:DesignerCanvas.SendToBack}">
                <MenuItem.Icon>
                    <Image Source="Images/16x16/send_back.png" Width="16"/>
                </MenuItem.Icon>
            </MenuItem>
        </MenuItem>
    </ContextMenu>-->

    <!-- resize thumb style -->
    <Style x:Key="ResizeThumbStyle" TargetType="{x:Type compo:ResizeThumb}">
        <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>
        <Setter Property="Background" Value="{DynamicResource NormalBackgroundBrush}"/>
        <Setter Property="Foreground" Value="{DynamicResource NormalForegroundBrush}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type compo:ResizeThumb}">
                    <Ellipse>
                        <Ellipse.Fill>
                            <RadialGradientBrush>
                                <GradientStop Color="Black" Offset="0"/>
                                <GradientStop Color="White" Offset="1"/>
                            </RadialGradientBrush>
                        </Ellipse.Fill>
                    </Ellipse>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!-- Connector Style -->
    <Style TargetType="{x:Type compo:Connector}">
        <Setter Property="Width" Value="8"/>
        <Setter Property="Height" Value="8"/>
        <Setter Property="Cursor" Value="Cross"/>
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type compo:Connector}">
                    <Grid>
                        <!-- transparent extra space makes connector easier to hit -->
                        <Rectangle Fill="Transparent" Margin="-2"/>
                        <Rectangle Fill="Lavender" StrokeThickness="1" Stroke="#AA000080"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!-- ConnectorDecoratorTemplate Default Template -->
    <ControlTemplate x:Key="ConnectorDecoratorTemplate" TargetType="{x:Type Control}">
        <Grid Margin="-5">
            <compo:Connector x:Name="Left" Orientation="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
            <compo:Connector x:Name="Top" Orientation="Top" VerticalAlignment="Top" HorizontalAlignment="Center"/>
            <compo:Connector x:Name="Right" Orientation="Right" VerticalAlignment="Center" HorizontalAlignment="Right"/>
            <compo:Connector x:Name="Bottom" Orientation="Bottom" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>
        </Grid>
    </ControlTemplate>

    <!-- ResizeDecorator Default Template -->
    <ControlTemplate x:Key="ResizeDecoratorTemplate" TargetType="{x:Type Control}">
        <Grid Opacity="0.7" SnapsToDevicePixels="true">
            <compo:ResizeThumb Height="2" Cursor="SizeNS" Margin="0 -4 0 0"
                     VerticalAlignment="Top" HorizontalAlignment="Stretch"/>
            <compo:ResizeThumb Width="2" Cursor="SizeWE" Margin="-4 0 0 0"
                     VerticalAlignment="Stretch" HorizontalAlignment="Left"/>
            <compo:ResizeThumb Width="2" Cursor="SizeWE" Margin="0 0 -4 0"
                     VerticalAlignment="Stretch" HorizontalAlignment="Right"/>
            <compo:ResizeThumb Height="2" Cursor="SizeNS" Margin="0 0 0 -4"
                     VerticalAlignment="Bottom" HorizontalAlignment="Stretch"/>
            
            <compo:ResizeThumb Width="7" Height="7" Cursor="SizeNWSE" Margin="-6 -6 0 0"
                     VerticalAlignment="Top" HorizontalAlignment="Left" Style="{DynamicResource ResizeThumbStyle}"/>
            <compo:ResizeThumb Width="7" Height="7" Cursor="SizeNESW" Margin="0 -6 -6 0"
                     VerticalAlignment="Top" HorizontalAlignment="Right" Style="{DynamicResource ResizeThumbStyle}"/>
            <compo:ResizeThumb Width="7" Height="7" Cursor="SizeNESW" Margin="-6 0 0 -6"
                     VerticalAlignment="Bottom" HorizontalAlignment="Left" Style="{DynamicResource ResizeThumbStyle}"/>
            <compo:ResizeThumb Width="7" Height="7" Cursor="SizeNWSE" Margin="0 0 -6 -6"
                     VerticalAlignment="Bottom" HorizontalAlignment="Right" Style="{DynamicResource ResizeThumbStyle}"/>
        </Grid>
    </ControlTemplate>

    <!-- DragThumb Default Template -->
    <Style TargetType="{x:Type compo:DragThumb}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type compo:DragThumb}">
                    <Rectangle Fill="Transparent"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!-- DesignerItem Style -->
    <Style TargetType="{x:Type compo:DesignerItem}">
        <Setter Property="MinWidth" Value="10"/>
        <Setter Property="MinHeight" Value="10"/>
        <Setter Property="SnapsToDevicePixels" Value="True"/>        
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type compo:DesignerItem}">
                    <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=.}"
                          >
                          <!--ContextMenu="{StaticResource DesignerItemContextMenu}"-->
                        
                        <!-- PART_DragThumb -->
                        <compo:DragThumb x:Name="PART_DragThumb" Cursor="SizeAll"
                                />                        
                        <!-- PART_ResizeDecorator -->
                        <Control x:Name="PART_ResizeDecorator" Visibility="Collapsed"
                                 Template="{StaticResource ResizeDecoratorTemplate}"
                                 />
                        <!-- PART_ContentPresenter -->
                        <Control x:Name="PART_ContentPresenter"
                                          HorizontalAlignment="Stretch"
                                          VerticalAlignment="Stretch"
                                          Margin="{TemplateBinding ContentControl.Padding}"
                                          DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DataContext}"
                                        />
                        
                        <!-- PART_ConnectorDecorator -->
                        <Control x:Name="PART_ConnectorDecorator" Visibility="Hidden"
                                 Template="{StaticResource ConnectorDecoratorTemplate}"
                                 />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <DataTrigger Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsGroup}">
                            <Setter TargetName="PART_DragThumb" Property="Visibility" Value="Collapsed"/>
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsSelected}"/>
                                <Condition Value="{x:Static sys:Guid.Empty}" Binding="{Binding RelativeSource={RelativeSource Self},Path=ParentID}"/>
                            </MultiDataTrigger.Conditions>
                            <Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
                        </Trigger>
                        <DataTrigger Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsDragConnectionOver}">
                            <Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
                        </DataTrigger>
                        <DataTrigger Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsGroup}">
                            <Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Hidden"/>
                        </DataTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>